#Область ПрограммныйИнтерфейс

// Проверяет, является ли текущий или указанный пользователь полноправным.
// 
// Полноправным считается пользователь, который
// а) при не пустом списке пользователей информационной базы, 
//    имеет роль ПолныеПрава и роль для администрирования системы (если ПроверятьПраваАдминистрированияСистемы = Истина)
// б) при пустом списке пользователей информационной базы
//    основная роль конфигурации не задана или ПолныеПрава.
//
// Параметры:
//  Пользователь - Неопределено - проверяется текущий пользователь ИБ.
//               - СправочникСсылка.Пользователи, СправочникСсылка.ВнешниеПользователи - осуществляется
//                    поиск пользователя ИБ по уникальному идентификатору, заданному в реквизите.
//                    ИдентификаторПользователяИБ. Если пользователь ИБ не найден, возвращается Ложь.
//               - ПользовательИнформационнойБазы - проверяется указанный пользователь ИБ.
//
//  ПроверятьПраваАдминистрированияСистемы - Булево - если задано Истина, тогда проверяется наличие
//                 роли для администрирования системы.
//
//  УчитыватьПривилегированныйРежим - Булево - если задано Истина, тогда для текущего пользователя
//                 функция возвращает Истина, когда установлен привилегированный режим.
//
// Возвращаемое значение:
//  Булево - если Истина, пользователь является полноправным.
//
Функция ЭтоПолноправныйПользователь(Пользователь = Неопределено, ПроверятьПраваАдминистрированияСистемы = Ложь,
	УчитыватьПривилегированныйРежим = Истина) Экспорт

	Возврат ПравоДоступа("Администрирование", Метаданные) И ПравоДоступа("АдминистрированиеДанных", Метаданные);
КонецФункции

Процедура УстановитьПарольПользователюИБ(ИмяПользователя, Пароль) Экспорт
	ПользовательИБ=ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя);
	Если ПользовательИБ=Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ПользовательИБ.АутентификацияСтандартная=Истина;
	ПользовательИБ.Пароль=Пароль;
	ПользовательИБ.Записать();
КонецПроцедуры

Функция ДанныеСохраненногоПароляПользователяИБ(ИмяПользователя) Экспорт
	ПользовательИБ=ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя);
	Если ПользовательИБ=Неопределено Тогда
		Возврат Неопределено;
	КонецЕсли;
	
	Данные=Новый Структура;
	Данные.Вставить("СохраняемоеЗначениеПароля", ПользовательИБ.СохраняемоеЗначениеПароля);
	Данные.Вставить("ПарольУстановлен", ПользовательИБ.ПарольУстановлен);
	Данные.Вставить("АутентификацияСтандартная", ПользовательИБ.АутентификацияСтандартная);
	Данные.Вставить("АутентификацияОС", ПользовательИБ.АутентификацияОС);
	
	Возврат Данные;
КонецФункции

Процедура ВосстановитьДанныеПользователяПослеЗапускаСеансаПодПользователем(ИмяПользователя, ДанныеСохраненногоПароляПользователяИБ) Экспорт
	ПользовательИБ=ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя);
	Если ПользовательИБ=Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ПользовательИБ.АутентификацияСтандартная=ДанныеСохраненногоПароляПользователяИБ.АутентификацияСтандартная;
	ПользовательИБ.СохраняемоеЗначениеПароля=ДанныеСохраненногоПароляПользователяИБ.СохраняемоеЗначениеПароля;
	ПользовательИБ.Записать();
	
КонецПроцедуры


#КонецОбласти